//
// Copyright (c) 2011 Alex Nesterenko
//

#include "nane/core/crt/std/StdTimeImpl_.h"
#include "nane/core/crt/Context.h"

namespace nane
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    bool Time::initialize()
    {
        assert( m_context );
        assert( m_context->timeSystem == NULL );
        nane::m_context->timeSystem = new Implementation();
        if( nane::m_context->timeSystem->initialize() == false )
        {
            shutdown();
        }
        return nane::m_context->timeSystem != NULL;
    }
    ////////////////////////////////////////////////////////////////////////////
    void Time::shutdown()
    {
        if( nane::m_context->timeSystem != NULL )
        {
            nane::m_context->timeSystem->shutdown();
        }
        delete static_cast<Implementation*>(nane::m_context->timeSystem);
        nane::m_context->timeSystem = NULL;
        Holder<ITimeSystem>::clear();
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane
